package com.casa_apoio.controller;

import com.casa_apoio.model.dao.HospedeDAO;
import com.casa_apoio.model.entity.Hospede;
import com.casa_apoio.util.FacesContextUtil;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@ViewScoped
public class MbHospede implements Serializable {

    private Hospede hospede;
    private List<Hospede> hospedes;
    private String pesquisa;
    private Integer codigoHospede;

    public HospedeDAO hospedeDAO() {
        HospedeDAO<Hospede> hospedeDAO = new HospedeDAO<Hospede>(Hospede.class, FacesContextUtil.getRequestSession());
        return hospedeDAO;
    }

    public void pesquisarHospede() {
        hospedes = null;
        if (!pesquisa.isEmpty()) {
            hospedes = hospedeDAO().pesquisarHospede(pesquisa);
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Para realizar a pesquisa o campo não pode ser vazio!", "Erro"));
        }
        pesquisa = "";
    }

    public String salvarHospede() {
        if (hospede.getIdHospede() == null || hospede.getIdHospede() == 0) {
            hospedeDAO().salvar(hospede);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Gravação efetuada com sucesso!", ""));
        } else {
            System.out.println(" Cidade do Hospede " + hospede.getCidade().getCidade());
            hospedeDAO().atualizar(hospede);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Alteração efetuada com sucesso", ""));
        }
        limparHospede();
        return null;
    }

    public String alterarHospede(Integer codigo) {
        if (codigo != null) {
            hospede = (Hospede) hospedeDAO().getEntity(codigo);
            if (hospede == null) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Hospede não encontrado, verifique o codigo digitado!", ""));
                return null;
            }
        }
        return null;//"/restrict/cadastroHospede.faces";
    }

    public String excluir(Hospede hospede) {
        try {
            hospedeDAO().atualizar(hospede);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro excluido com sucesso!", ""));
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro não pode ser excluido!", ""));
        }

        return null;
    }

    public String limparHospede() {
        hospede = new Hospede();
        return null;//"cadastroHospede.faces";
    }

    public Hospede getHospede() {
        if (hospede == null) {
            hospede = new Hospede();
        }
        return hospede;
    }

    public void setHospede(Hospede hospede) {
        this.hospede = hospede;
    }

    public List<Hospede> getHospedes() {
       // if (hospedes == null) {
            //hospedes = hospedeDAO().listaHospedePorNome();
       // }
        return hospedes;
    }

    public void setHospedes(List<Hospede> hospedes) {
        this.hospedes = hospedes;
    }

    public String getPesquisa() {
        return pesquisa;
    }

    public void setPesquisa(String pesquisa) {
        this.pesquisa = pesquisa;
    }

    public Integer getCodigoHospede() {
        return codigoHospede;
    }

    public void setCodigoHospede(Integer codigoHospede) {
        this.codigoHospede = codigoHospede;
    }
}
